var util = require('../../../utils/util.js');

var api = require('../../../config/api.js');

var app = getApp();
Page({
  data: {
    address: {
      id: 0,
      province_id: 0,
      city_id: 0,
      district_id: 0,
      address: '',
      full_region: '',
      name: '',
      mobile: '',
      is_default: 0
    },
    addressId: 0,
    openSelectRegion: false,
    selectRegionList: [{
      id: 0,
      name: '省份',
      parent_id: 1,
      type: 1
    }, {
      id: 0,
      name: '城市',
      parent_id: 1,
      type: 2
    }, {
      id: 0,
      name: '区县',
      parent_id: 1,
      type: 3
    }],
    regionType: 1,
    regionList: [],
    selectRegionDone: false
  },

  mobilechange(e) {
    let mobile = e.detail.value;
    let address = this.data.address;

    if (util.testMobile(mobile)) {
      address.mobile = mobile;
      this.setData({
        address: address
      });
    }
  },

  bindinputName(event) {
    let address = this.data.address;
    address.name = event.detail.value;
    this.setData({
      address: address
    });
  },

  bindinputAddress(event) {
    let address = this.data.address;
    address.address = event.detail.value;
    this.setData({
      address: address
    });
  },

  switchChange(e) {
    let status = e.detail.value;
    let is_default = 0;

    if (status == true) {
      is_default = 1;
    }

    let address = 'address.is_default';
    this.setData({
      [address]: is_default
    });
  },

  getAddressDetail() {
    let that = this;
    util.request(api.AddressDetail, {
      id: that.data.addressId
    }).then(function (res) {
      if (res.errno === 0) {
        that.setData({
          address: res.data
        });
      }
    });
  },

  deleteAddress: function () {
    let id = this.data.addressId;
    tt.showModal({
      title: '提示',
      content: '您确定要删除么？',
      success: function (res) {
        if (res.confirm) {
          util.request(api.DeleteAddress, {
            id: id
          }, 'POST').then(function (res) {
            if (res.errno === 0) {
              tt.removeStorageSync('addressId');
              util.showErrorToast('删除成功');
              tt.navigateBack();
            } else {
              util.showErrorToast(res.errmsg);
            }
          });
        }
      }
    });
  },

  setRegionDoneStatus() {
    let that = this;
    let doneStatus = that.data.selectRegionList.every(item => {
      return item.id != 0;
    });
    that.setData({
      selectRegionDone: doneStatus
    });
  },

  chooseRegion() {
    let that = this;
    this.setData({
      openSelectRegion: !this.data.openSelectRegion
    }); //设置区域选择数据

    let address = this.data.address;

    if (address.province_id > 0 && address.city_id > 0 && address.district_id > 0) {
      let selectRegionList = this.data.selectRegionList;
      selectRegionList[0].id = address.province_id;
      selectRegionList[0].name = address.province_name;
      selectRegionList[0].parent_id = 1;
      selectRegionList[1].id = address.city_id;
      selectRegionList[1].name = address.city_name;
      selectRegionList[1].parent_id = address.province_id;
      selectRegionList[2].id = address.district_id;
      selectRegionList[2].name = address.district_name;
      selectRegionList[2].parent_id = address.city_id;
      this.setData({
        selectRegionList: selectRegionList,
        regionType: 3
      });
      this.getRegionList(address.city_id);
    } else {
      this.setData({
        selectRegionList: [{
          id: 0,
          name: '省份',
          parent_id: 1,
          type: 1
        }, {
          id: 0,
          name: '城市',
          parent_id: 1,
          type: 2
        }, {
          id: 0,
          name: '区县',
          parent_id: 1,
          type: 3
        }],
        regionType: 1
      });
      this.getRegionList(1);
    }

    this.setRegionDoneStatus();
  },

  onLoad: function (options) {
    // 页面初始化 options为页面跳转所带来的参数
    if (options.id) {
      this.setData({
        addressId: options.id
      });
      this.getAddressDetail();
    }

    this.getRegionList(1);
  },
  onReady: function () {},

  selectRegionType(event) {
    let that = this;
    let regionTypeIndex = event.target.dataset.regionTypeIndex;
    let selectRegionList = that.data.selectRegionList; //判断是否可点击

    if (regionTypeIndex + 1 == this.data.regionType || regionTypeIndex - 1 >= 0 && selectRegionList[regionTypeIndex - 1].id <= 0) {
      return false;
    }

    this.setData({
      regionType: regionTypeIndex + 1
    });
    let selectRegionItem = selectRegionList[regionTypeIndex];
    this.getRegionList(selectRegionItem.parent_id);
    this.setRegionDoneStatus();
  },

  selectRegion(event) {
    let that = this;
    let regionIndex = event.target.dataset.regionIndex;
    let regionItem = this.data.regionList[regionIndex];
    let regionType = regionItem.type;
    let selectRegionList = this.data.selectRegionList;
    selectRegionList[regionType - 1] = regionItem;

    if (regionType != 3) {
      this.setData({
        selectRegionList: selectRegionList,
        regionType: regionType + 1
      });
      this.getRegionList(regionItem.id);
    } else {
      this.setData({
        selectRegionList: selectRegionList
      });
    } //重置下级区域为空


    selectRegionList.map((item, index) => {
      if (index > regionType - 1) {
        item.id = 0;
        item.name = index == 1 ? '城市' : '区县';
        item.parent_id = 0;
      }

      return item;
    });
    this.setData({
      selectRegionList: selectRegionList
    });
    that.setData({
      regionList: that.data.regionList.map(item => {
        //标记已选择的
        if (that.data.regionType == item.type && that.data.selectRegionList[that.data.regionType - 1].id == item.id) {
          item.selected = true;
        } else {
          item.selected = false;
        }

        return item;
      })
    });
    this.setRegionDoneStatus();
  },

  doneSelectRegion() {
    if (this.data.selectRegionDone === false) {
      return false;
    }

    let address = this.data.address;
    let selectRegionList = this.data.selectRegionList;
    address.province_id = selectRegionList[0].id;
    address.city_id = selectRegionList[1].id;
    address.district_id = selectRegionList[2].id;
    address.province_name = selectRegionList[0].name;
    address.city_name = selectRegionList[1].name;
    address.district_name = selectRegionList[2].name;
    address.full_region = selectRegionList.map(item => {
      return item.name;
    }).join('');
    this.setData({
      address: address,
      openSelectRegion: false
    });
  },

  cancelSelectRegion() {
    this.setData({
      openSelectRegion: false,
      regionType: this.data.regionDoneStatus ? 3 : 1
    });
  },

  getRegionList(regionId) {
    let that = this;
    let regionType = that.data.regionType;
    util.request(api.RegionList, {
      parentId: regionId
    }).then(function (res) {
      if (res.errno === 0) {
        that.setData({
          regionList: res.data.map(item => {
            //标记已选择的
            if (regionType == item.type && that.data.selectRegionList[regionType - 1].id == item.id) {
              item.selected = true;
            } else {
              item.selected = false;
            }

            return item;
          })
        });
      }
    });
  },

  saveAddress() {
    let address = this.data.address;

    if (address.name == '' || address.name == undefined) {
      util.showErrorToast('请输入姓名');
      return false;
    }

    if (address.mobile == '' || address.mobile == undefined) {
      util.showErrorToast('请输入手机号码');
      return false;
    }

    if (address.district_id == 0 || address.district_id == undefined) {
      util.showErrorToast('请输入省市区');
      return false;
    }

    if (address.address == '' || address.address == undefined) {
      util.showErrorToast('请输入详细地址');
      return false;
    }

    let that = this;
    util.request(api.SaveAddress, {
      id: address.id,
      name: address.name,
      mobile: address.mobile,
      province_id: address.province_id,
      city_id: address.city_id,
      district_id: address.district_id,
      address: address.address,
      is_default: address.is_default
    }, 'POST').then(function (res) {
      if (res.errno === 0) {
        tt.navigateBack();
      }
    });
  },

  onShow: function () {
    let id = this.data.addressId;

    if (id > 0) {
      tt.setNavigationBarTitle({
        title: '编辑地址'
      });
    } else {
      tt.setNavigationBarTitle({
        title: '新增地址'
      });
    }
  },
  onHide: function () {// 页面隐藏
  },
  onUnload: function () {// 页面关闭
  }
});